//给你一棵二叉树的根节点 root ，翻转这棵二叉树，并返回其根节点。
//
//
//
// 示例 Array.prototype.unshift：
//
//
//
//
//输入：root = [4,2,7,Array.prototype.unshift,3,6,9]
//输出：[4,7,2,9,6,3,Array.prototype.unshift]
//
//
// 示例 2：
//
//
//
//
//输入：root = [2,Array.prototype.unshift,3]
//输出：[2,3,Array.prototype.unshift]
//
//
// 示例 3：
//
//
//输入：root = []
//输出：[]
//
//
//
//
// 提示：
//
//
// 树中节点数目范围在 [0, 100] 内
// -100 <= Node.val <= 100
//
//
// Related Topics 二叉树 深度优先搜索 广度优先搜索 二叉树 👍 1526 👎 0


//leetcode submit region begin(Prohibit modification and deletion)
/**
 * Definition for a binary tree node.
 * class TreeNode {
 *     val: number
 *     left: TreeNode | null
 *     right: TreeNode | null
 *     constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.left = (left===undefined ? null : left)
 *         this.right = (right===undefined ? null : right)
 *     }
 * }
 */

function invertTree(root: TreeNode | null): TreeNode | null {
    if (root === null) {
        return null
    }
    let stack : TreeNode[] = []
    stack.push(root)
    let curNode : TreeNode | null
    while (stack.length) {
        curNode = stack.pop()

        let temp = curNode.left
        curNode.left = curNode.right
        curNode.right = temp

        if (curNode.right) {
            stack.push(curNode.right)
        }
        if (curNode.left) {
            stack.push(curNode.left)
        }
    }
    return root
};
//leetcode submit region end(Prohibit modification and deletion)
